/*
******************************************************************************************************* 
**  Copyright (C) 2019, 苏州检易生物科技有限公司 
**  All rights reserved. 
** 
**  FileName:       	motor_step.c
**  Description:	
**  Author:        	 
**  Version				v0.1
**  Date:           	2019-08-06
**	Function List： 
**  History:         
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                              	调试开关
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                             INCLUDE FILES
*********************************************************************************************************
*/
#include "motor_step.h"
#include "motor.h"
#include "log_console.h"
/*
*********************************************************************************************************
*                                              	宏定义
*********************************************************************************************************
*/
#define FLASH_SIZE_STEP_CFG	(sizeof(motor_para_t))

/*
*********************************************************************************************************
*                                              	结构体定义
*********************************************************************************************************
*/

 
/*
*********************************************************************************************************
*                                              	函数原型声明
*********************************************************************************************************
*/
/*需要特殊计算的位置*/
static int32_t mp_plunger_pos(motor_t * p_motor, uint8_t next_pos, int32_t arg);
static int32_t default_pos(motor_t * p_motor, uint8_t next_pos, int32_t arg);

/*
*********************************************************************************************************
*                                              	变量定义
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                              	函数定义
*********************************************************************************************************
*/
int32_t motor_pos_para(motor_t* p_motor, uint8_t next_pos, int32_t arg)
{
	ASSERT(p_motor);
	switch(p_motor->motor_id)
	{
//		case M_RACK_ROTATE:return rack_rotate_pos(p_motor,next_pos,arg);break;
//		case M_RP_VERT:return rp_vert_pos(p_motor,next_pos,arg);break;
//		case M_SP_VERT:return sp_vert_pos(p_motor,next_pos,arg);break;
//		case M_REAGENT_ROTATE:return rtd_rotate_pos(p_motor,next_pos,arg);break;
////		case M_TUBE_ROTATE:tube_rotate_pos(p_motor,next_pos,arg);break;
//		case MP_CP1:
//		case MP_CP2:
//		case MP_CP3:
//		case MP_RP:
//		case MP_SP:
//		case MP_RB:
//		case MP_RA:
//			return mp_plunger_pos(p_motor,next_pos,arg);
//			break;
//		case M_RND_MIX_SHAKE:
//		case M_CD_MIX_SHAKE:
////		case M_TUBE_LOAD:
//		case MP_SUCK:
//			Critical_Log("Motor index %d should work in speed mode!\r\n",p_motor->motor_id);
//			break;
		default:return default_pos(p_motor,next_pos,arg);break;
	}
	return 0;
}
int32_t motor_step_para(motor_t* p_motor, uint8_t next_pos, int32_t arg)
{
	ASSERT(p_motor);
	int32_t step_inc = 0;
	if(DEFAULT_STEP == next_pos)
		return arg;
	{
		step_inc = ((int32_t*)p_motor->p_motor_step)[next_pos];
	}
//	Critical_Log("Enter get step error!\r\n");
	return arg;
}

/*柱塞泵*/
static int32_t mp_plunger_pos(motor_t * p_motor, uint8_t next_pos, int32_t arg)
{
	return default_pos(p_motor,next_pos,arg);
}
static int32_t default_pos(motor_t * p_motor, uint8_t next_pos, int32_t arg)
{
	int* p_para = (int*)p_motor->p_motor_step;
	switch(next_pos)
	{
		case DEFAULT_POS:
			p_motor->tar_pos = arg;
			break;
		default:
			p_motor->tar_pos = p_para[next_pos];
			break;
	}
	return p_motor->tar_pos;
}
